package com.haoze.nurseapp.service;

import com.github.pagehelper.PageInfo;
import com.haoze.common.response.Result;
import com.haoze.nurseapp.dto.GeneralCheckLogDTO;
import com.haoze.nurseapp.dto.NurseOrdersReviewDTO;
import com.haoze.nurseapp.dto.OrderPageDto;
import com.haoze.nurseapp.dto.OrdersReviewDTO;
import com.haoze.nurseapp.vo.OrderInfoByInpatNoVo;

import java.util.List;
import java.util.Map;

public interface OrderService {


    Result orderType();

    Result orderDetail(String inpatorderdataId, String startDate, String endDate, Integer page, Integer pageSize);

    Result orderInfoByOrderDataId(String inpatorderdataId);

    /**
     * 医嘱-分页-app
     * @param pageDto 查询参数
     * @return
     */
    PageInfo<OrderInfoByInpatNoVo> queryPagesList(OrderPageDto pageDto);

    /**
     * 复核列表
     * @param inpatList
     * @param startDatetime
     * @param endDateTime
     * @return
     */
    Result reviewList(String inpatList, String startDatetime, String endDateTime,String type,String bedNo);

    /**
     * 复核列表
     * @param inpatList
     * @param startDatetime
     * @param endDateTime
     * @return
     */
    Result queryPatientBedNoList(String wardDeptId,String inpatList, String startDatetime, String endDateTime,String type,String status);


    /**
     * 医嘱复核功能
     * @param nurseOrdersReviewDTO
     * @return
     */
    //Result patientOrdersReview(List<OrdersReviewDTO> inpatorderdataIds);
    Result patientOrdersReview(NurseOrdersReviewDTO nurseOrdersReviewDTO);
    Result patientOrdersReviewDoctor(List<OrdersReviewDTO> ordersReviewDTOList);

    /**
     * 医嘱未复核列表病人列表
     * @param wardDeptId
     * @return
     */
    Result notReviewPatientList(String wardDeptId,String status);

    PageInfo<OrderInfoByInpatNoVo> queryPagesListApp(OrderPageDto orderPageDto);

    /**
     * 医嘱核对列表
     * @param inpatList
     * @param startDatetime
     * @param endDateTime
     * @param orderType
     * @param status
     * @return
     */
    Result ordersCheckList(String inpatList, String startDatetime, String endDateTime,String orderType,String status);

    /**
     * 医嘱总对列表
     * @param inpatorderdataIds
     * @return
     */
    Result saveOrdersCheck(List<OrdersReviewDTO> inpatorderdataIds);

    /**
     * 医嘱总对列表
     * @param inpatList
     * @param orderType 0 整理医嘱、1长期医嘱、2临时医嘱
     * @param status 0总对医嘱 1查询医嘱
     * @return
     */
    Result ordersGeneralCheckList(String inpatList,String orderType,String status);

    /**
     * 医嘱总对列表
     * @param inpatList
     * @param status 0总对医嘱 1查询医嘱
     * @return
     */
    Result ordersGeneralCheckTypeCount(String inpatList,String status);


    /**
     * 医嘱复核功能
     * @param generalCheckLogDTO
     * @return
     */
    Result saveGeneralCheck(GeneralCheckLogDTO generalCheckLogDTO);

    /**
     * 患者用药列表
     * @param inpatNum
     * @param page
     * @param pageSize
     * @return
     */
    Result useMedicationList(String inpatNum, Integer page, Integer pageSize,String keyWords,String type);

    /**
     * 根据医嘱查询药品明细
     * @param orderId
     * @return
     */
    Result inpRecByOrderId(String orderId,String prescNum);

    /**
     * 静配未通过医嘱审核查询
     * @param startDateTime
     * @param endDateTime
     * @return
     */
    Result queryStaticList(String startDateTime, String endDateTime,String wardId);

    /**
     * 医嘱记账查询
     * @param inpatNum
     * @param type
     * @return
     */
    Result queryOrdersBookKeeping(String inpatNum, String type,Integer page,Integer pageSize);

    /**
     * 补划价
     */
    Result ordersSupplement(List<OrdersReviewDTO> inpatorderdataIds);

    /**
     * 补划价
     */
    Result queryCostByOrderId(OrdersReviewDTO inpatorderdataIds);
    /**
     * 医嘱记账总费用
     */
    Result queryOrderBookKeepingTotalCost(String inpatNum);
}
